refactor(studio): scroll only the open group's body, keep headers fixed#2134
Conversation
miga-heygen
left a comment
There was a problem hiding this comment.
Reviewed as part of the 15-PR edit-panel redesign stack. Full stack review posted on #2120. No blockers on this PR. — Miga
Collapsed group headers render in fixed, non-scrolling document flow above and below the open group; only the open group's own content scrolls, in a dedicated region. Also fixes the flat inspector footer's missing background. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
miguel-heygen
left a comment
There was a problem hiding this comment.
Final current-head pass: 5d24fc1. Reviewed the stack boundaries and current diff against the flat-inspector contracts; required checks have no failures/pending checks and no unresolved review threads remain. No new drift found; residual notes are non-blocking.
5d24fc1 to
6374b78
Compare
fa4d579 to
605f435
Compare
miguel-heygen
left a comment
There was a problem hiding this comment.
Superseding earlier approval: the latest max-review pass found confirmed correctness issues in this flat-inspector stack (identity/selector-index state, hide-all write races, timing inference, slider pointer/keyboard/reset semantics, and duplicate React keys). Hold merge and require fixes plus re-review on the current stack head.

What
Ninth PR in the flat inspector stack (see #2120 for the foundation and full stack list). Collapsed group headers now render in fixed, non-scrolling document flow above and below the open group — always fully visible, in natural order. Only the open group's own body content scrolls, in a dedicated scrollable region between the two fixed header stacks. Also fixes the flat inspector footer's missing background (was fully transparent).
Stack: #2120 → ... → #2127 → #2135 (this).
Why
An earlier
position: sticky-based approach (collapsed headers stacking to the top/bottom edges as you scroll one shared container) was tried and refined live, but required sub-pixel-precision offset math and still hit a Chromium rounding quirk at the sticky-to-footer boundary. The user watched this live and asked for something architecturally simpler: headers that never move at all, with only the expanded section's content scrolling. This PR is that simpler design — collapsed here into one clean commit rather than shipping the sticky approach and then reverting it in a follow-up.How
PropertyPanelFlat.tsxsplits the group list intobeforeOpen/openGroup/afterOpenbased on the open group's position.beforeOpenandafterOpenrender as plain collapsed headers in normal flow;openGrouprenders its header (also fixed) followed by a dedicatedoverflow-y-autodiv holding just its body content.FlatGroupsplit into a header-onlyFlatGroupHeadercomponent — no morechildren/body prop, noposition: sticky, no offset math.PropertyPanelFlatFooter.tsxgained abg-panel-bgbackground (it was fully transparent, a real pre-existing bug independent of any scrolling approach).Test plan
getBoundingClientRect().topof every collapsed header and the footer before and after scrolling the open group's body — values were bit-for-bit identical, confirming headers genuinely never move.oxlint/oxfmt/fallowclean.